﻿Option Explicit On
Option Strict On
Imports System.Data.OleDb

'Documentación XML
''' <summary>
''' Esta clase gestionará los jugadores que pertenecen a cada equipo.
''' </summary>
''' <author> Jerón Fernández Caballero Rico</author>
''' <author> Daniel Morato Baudi</author>

Public Class Jugador

    ' Atributos
    Private _MiEquipo As Equipo
    Private _Nombre As String
    Private _Apellido As String
    Private _Direccion As String
    Private _Telefono As Integer
    Private _Email As String
    Private _WhatsApp As Integer
    Private _Facebook As String
    Private _Twitter As String
    Private _Observaciones As String

    ' Constructores
    Public Sub New()

        Me._MiEquipo = New Equipo
        Me._Nombre = ""
        Me._Apellido = ""
        Me._Direccion = ""
        Me._Telefono = 0
        Me._Email = ""
        Me._WhatsApp = 0
        Me._Facebook = ""
        Me._Twitter = ""
        Me._Observaciones = ""

    End Sub

    'Documentación XML
    ''' <param name="Nombre">(String) Nombre del jugador.</param>
    ''' <param name="Apellido">(String) Apellido del jugador.</param>
    ''' <param name="Direccion">(String) Dirección del jugador.</param>
    ''' <param name="Telefono">(Integer) Numero de telefono del jugador.</param>
    ''' <param name="Email">(String) Email del jugador.</param>
    ''' <param name="Whatsapp">(Boolean) Indica si el jugador dispone o no
    ''' de la aplicacion Whatsapp.</param>
    ''' <param name="Facebook">(String) Indica si el jugador dispone de
    ''' cuenta en Facebook.</param>
    ''' <param name="Twitter">(String) Indica si el jugador dispone de 
    ''' cuenta en Twitter.</param>
    ''' <param name="Observaciones">(String) Observaciones acerca del jugador.</param>

    Public Sub New(ByVal Nombre As String, ByVal Apellido As String, ByVal Direccion As String,
                   ByVal Telefono As Integer, ByVal Email As String, ByVal Whatsapp As Integer,
                   ByVal Facebook As String, ByVal Twitter As String, ByVal Observaciones As String)

        Me._Nombre = ComprobarCadena(Nombre)
        Me._Apellido = ComprobarCadena(Apellido)
        Me._Direccion = ComprobarDireccion(Direccion)
        Me._Telefono = Telefono
        Me._Email = ComprobarEmail(Email)
        Me._WhatsApp = Whatsapp
        Me._Facebook = Facebook
        Me._Twitter = Twitter
        Me._Observaciones = ComprobarCadena(Observaciones)

    End Sub

    ' Métodos
    ''' <param name="Equipo1">(Equipo) Equipo que asignaremos al jugador.</param>
    Public Sub AsignarEquipo(ByVal Equipo1 As Equipo)

        Me._MiEquipo = Equipo1

    End Sub

    ''' <param name="JugadorInsertar">(Jugador) Jugador que insertaremos en la base de datos.</param>
    Public Sub AnyadirJugador(ByVal JugadorInsertar As Jugador)

        Dim MiBD As New BaseDatos
        Dim ConsultaJugador As String
        Dim Mensaje As String

        ConsultaJugador = "INSERT INTO Jugador(Nombre, Apellido, " & _
                          "Direccion, Telefono, Email, WhatsApp, " & _
                          "FaceBook, Twitter, Observaciones) VALUES ('" & _
                          JugadorInsertar._Nombre & "', '" & _
                          JugadorInsertar._Apellido & "', '" & _
                          JugadorInsertar._Direccion & "', '" & _
                          JugadorInsertar._Telefono & "', '" & _
                          JugadorInsertar._Email & "', '" & _
                          JugadorInsertar._WhatsApp & "', '" & _
                          JugadorInsertar._Facebook & "', '" & _
                          JugadorInsertar._Twitter & "', '" & _
                          JugadorInsertar._Observaciones & "')"

        Mensaje = MiBD.Insertar(ConsultaJugador)
        MsgBox(Mensaje)
        FormEntrada.tsp_lb_Mensajes.Text = Mensaje
        FormEntrada.tsp_lb_Mensajes.Visible = True

    End Sub

    ''' <param name="JugadorBorrar">(String) Jugador que borraremos de la base de datos.</param>
    Public Sub BorrarDeBD(ByVal JugadorBorrar As String)

        Dim MiBD As New BaseDatos
        MiBD.Borrar("DELETE * FROM Jugador WHERE Nombre = '" & JugadorBorrar & "'")

    End Sub

    ''' <param name="CampoBuscado">(String) Campo que queremos obtener de la base de datos.</param>
    ''' <param name="Filtro">(Opcional)(String) Filtro que aplicaremos a nuestra búsqueda.</param>
    ''' <returns>(OleDbDataReader)  Devuelve un objeto DataReader con los datos leídos.</returns>
    Public Function ConsultarBD(ByVal CampoBuscado As String, Optional ByVal Filtro As String = "") As OleDbDataReader

        Dim MiBD As New BaseDatos
        Dim DatosLeidos As OleDbDataReader

        If Filtro.Length > 0 Then
            DatosLeidos = MiBD.Leer("SELECT " & CampoBuscado & " FROM Jugador WHERE " & Filtro)
        Else
            DatosLeidos = MiBD.Leer("SELECT " & CampoBuscado & " FROM Jugador")
        End If

        Return DatosLeidos

    End Function

    'Destructores
    Public Sub Dispose()

        Me._MiEquipo = Nothing
        Me._Nombre = ""
        Me._Apellido = ""
        Me._Direccion = ""
        Me._Telefono = 0
        Me._Email = ""
        Me._WhatsApp = 0
        Me._Facebook = ""
        Me._Twitter = ""
        Me._Observaciones = ""

    End Sub
    Protected Overrides Sub Finalize()

        Me._MiEquipo = Nothing
        Me._Nombre = ""
        Me._Apellido = ""
        Me._Direccion = ""
        Me._Telefono = 0
        Me._Email = ""
        Me._WhatsApp = 0
        Me._Facebook = ""
        Me._Twitter = ""
        Me._Observaciones = ""

    End Sub

    ' Get/Set
    Public Property Nombre() As String
        Get
            Return Me._Nombre
        End Get
        Set(ByVal value As String)
            Me._Nombre = ComprobarCadena(value)
        End Set
    End Property
    Public Property Apellido() As String
        Get
            Return Me._Apellido
        End Get
        Set(value As String)
            Me._Apellido = ComprobarCadena(value)
        End Set
    End Property
    Public Property Direccion() As String
        Get
            Return Me._Direccion
        End Get
        Set(ByVal value As String)
            Me._Direccion = ComprobarDireccion(value)
        End Set
    End Property
    Public Property Telefono() As Integer
        Get
            Return Me._Telefono
        End Get
        Set(ByVal value As Integer)
            Me._Telefono = value
        End Set
    End Property
    Public Property Email() As String
        Get
            Return Me._Email
        End Get
        Set(ByVal value As String)
            Me._Email = ComprobarEmail(value)
        End Set
    End Property
    Public Property Whatsapp() As Integer
        Get
            Return Me._WhatsApp
        End Get
        Set(ByVal value As Integer)
            Me._WhatsApp = value
        End Set
    End Property
    Public Property Facebook() As String
        Get
            Return Me._Facebook
        End Get
        Set(ByVal value As String)
            Me._Facebook = value
        End Set
    End Property
    Public Property Twitter() As String
        Get
            Return Me._Twitter
        End Get
        Set(ByVal value As String)
            Me._Twitter = value
        End Set
    End Property
    Public Property Observaciones() As String
        Get
            Return Me._Observaciones
        End Get
        Set(ByVal value As String)
            Me._Observaciones = ComprobarCadena(value)
        End Set
    End Property

End Class